动态数组:一种在运行时可以自动扩容或缩容的数组式数据结构。它通常在内部维护一段连续内存;当容量不足时,会分配更大的内存并把原有元素搬移过去(常见策略是按倍数扩容),从而在保持数组随机访问速度的同时,提供更灵活的大小变化。也常用来实现“可变长度列表”(如许多语言的 vector / ArrayList / list 的底层)。
/daɪˈnæmɪk əˈreɪ/
A dynamic array grows automatically when you append new elements.
动态数组会在你追加新元素时自动扩容。
Although resizing may occasionally cost O(n), a dynamic array offers amortized O(1) append operations in many implementations.
尽管扩容偶尔会带来 O(n) 的开销,但在许多实现中,动态数组的追加操作具有摊还 O(1) 的性能。
dynamic 来自希腊语 dynamis(力量、作用),在现代英语里常指“可变化的、非固定的”;array 源自古法语 aree/array,在计算机语境中指“按顺序排列的一组元素”。合起来 dynamic array 就是“大小可变的数组”。
std::vector(典型动态数组抽象)及其容量管理。 ArrayList 等集合的使用与性能权衡,背后依赖动态数组扩容机制。